//package com.example.demo1.generator.velocity.lys;
//
//import com.example.demo1.generator.codedesign.CommonUtil;
//import com.example.demo1.generator.codedesign.JdbcUtil;
//import com.example.demo1.generator.codedesign.model.FormType;
//import com.example.demo1.generator.codedesign.model.PropertyType;
//import org.apache.commons.lang3.StringUtils;
//
//import javax.annotation.Resource;
//import javax.sql.DataSource;
//import java.sql.*;
//import java.util.*;
//
//public class Table {
//    public static void main(String[] args) {
//        String tableName="";
//
//        Connection conn = null;
//        ResultSet keySet = null;
//        PreparedStatement statement = null;
//        Set<String> primaryKeySet = new HashSet<>();
//        List<Column> list = new ArrayList<>(500);
//        try {
//            conn = getConnection();
//            String catalog = conn.getCatalog();
//            String sql = "select * from  " + catalog + "." + tableName
//                    + " limit 0";
//            statement = conn.prepareStatement(sql);
//            // 获取当前表的元数据
//            ResultSetMetaData metaData = statement.executeQuery().getMetaData();
//            // 获取当前表的主键列表
//            keySet = conn.getMetaData().getPrimaryKeys(null, null, tableName);
//            while (keySet.next()) {
//                primaryKeySet.add(keySet.getString("COLUMN_NAME"));
//            }
//            Map<String, String> columnComments = getColumnComment(tableName);
//            for (int i = 1, len = metaData.getColumnCount(); i <= len; i++) {
//                Column item = new Column();
//                item.setName(metaData.getColumnName(i));
//                // 设置是否在页面显示
//                item.setShow(showColumn(item.getName()));
//                item.setSqlType(metaData.getColumnType(i));
//                item.setLenght(metaData.getColumnDisplaySize(i));
//                item.setNullable(metaData.isNullable(i) == 1);
//                if (primaryKeySet.contains(item.getName())) {
//                    item.setPrimaryKey(true);
//                } else {
//                    item.setPrimaryKey(false);
//                }
//                item.setReadOnly(metaData.isReadOnly(i));
//                item.setSearchable(metaData.isSearchable(i));
//                item.setWritable(metaData.isWritable(i));
//                item.setComment(columnComments.get(item.getName()));
//
//                PropertyType propertyType = PropertyType.getJavaType(item
//                        .getSqlType());
//                FormType formType = FormType.transform(propertyType);
//                item.setFormType(formType);
//                item.setPropertyType(propertyType);
//
//                // 如果超过128字符使用text area
//                if (item.getLenght() >= 256
//                        && item.getPropertyType() == PropertyType.STRING) {
//                    item.setFormType(FormType.TEXTAREA);
//                    item.setPropertyType(PropertyType.STRING);
//                }
//
//                if (StringUtils.isEmpty(item.getComment())) {
//                    item.setComment(null);
//                }
//                item.setPropertyName(CommonUtil.underlineToCapitalize(item
//                        .getName()));
//                item.setPropertyNameUpper(StringUtils.capitalize(item
//                        .getPropertyName()));
//
//                item.setConstantName(CommonUtil.capitalizeToUpperUnderline(item
//                        .getName()));
//
//                list.add(item);
//            }
//            return list;
//        } finally {
//            JdbcUtil.close(keySet);
//            JdbcUtil.close(statement);
//            JdbcUtil.close(conn);
//        }
//
//    }
//
//    @Resource
//    private DataSource dataSource;
//
//    private Connection getConnection() {
//        try {
//            return dataSource.getConnection();
//        } catch (SQLException e) {
//            throw new RuntimeException(e.getMessage(), e);
//        }
//    }
//}
